// 存放路由信息

// 导入路由：
//    constantRoutes 静态路由
//    asyncRoutes 动态路由
import { constantRoutes, asyncRoutes } from '../../router/index.js'

// 定义状态
const state = {
  // 保存路由信息:赋一个默认值（静态路由）
  routes: constantRoutes
}

// 定义 mutations
const mutations = {
  // 设置动态路由
  SET_ROUTES (state, payload) {
    // 将动态路由与静态路由进行合并
    state.routes = [...constantRoutes, ...payload]
  }
}

// 定义 actions
const actions = {
  // 筛选路由
  // context 当前仓库对象 menus 当前登录用户的权限列表
  setRoutes (context, menus) {
    const myRoute = []
    // 从所有的动态路由中找到用户权限列表中对应的路由，保存起来
    menus.forEach(item => {
      var res = asyncRoutes.filter(key => {
        return key.path === '/' + item
      })
      myRoute.push(...res)
    })
    // 将动态生成的路由保存到 state 中
    context.commit('SET_ROUTES', myRoute)
    // 将得到的动态路由返回出去（这又是一个伏笔）
    return myRoute
  }
}

export default {
  // 设置命名空间
  namespaced: true,
  state,
  mutations,
  actions
}
